<?php namespace Common\Model;

use Hdphp\Model\Model;

class Category extends Model{
	
	protected $table='category';
//	自动验证参数
//		 protected $validate
//Array
//(
//  [cname] => 234
//  [pid] => 0
//  [ctitle] => 234
//  [cdes] => 234
//  [csort] => 100
//)
	protected $validate=array(
		array('cname','required','分类名字不能为空',3,3)
	);
	//getAll      获取所有数据
//one         获取一条数据
//store       保存数据
//edit        更新数据
//del         删除数据
//		添加数据
	public function store(){
		if(!$this->create()) return FALSE;
//		如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
		return $this->add();
	}
	
	
	
//	获取除了本身和子集之外的数据
	public function getFdata($data,$cid){
		$cids=$this->getSon($data,$cid);
//		压入的id不能包含当前的cid，所以把当前的cid也压入进去
		$cids[]=$cid;
//		获得cid不在$cids里面的数据
		$result=$this->whereNotIn('cid',$cids)->get();
 	return Data::tree($result,'cname');
		
	}

	public function getSon($data,$cid){
		$temp=array();
		foreach($data as $v){
//			如果传进的cid找到了子集
			if($v['pid']==$cid){
				$temp[]=$v['cid'];
//				进行递归获取子集的cid
				$temp=array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
		
		return $temp;
		
	}




	
	public function edit(){
		if(!$this->create())  return FALSE;
		
//		如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
//			save()方法中如果post条件中包含主键，自动会修改主键对应的条目
		return $this->save();
	}
//	删除方法
	public function del($cid){
		$pid=$this->where('cid',$cid)->pluck('pid');
		
			$this->where('pid',$cid)->update(array('pid'=>$pid));
			
		return $this->where('cid',$cid)->delete();
	}
	
	
	
} 








 